package GOrden.mobile;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;

public class ResolverOrdenActivity extends Activity implements OnClickListener {
	
	private ProgressDialog progressDialog;
	private String ReceiveServer = "";
	private String orden;
	private String parametros;
	
	private final Handler progressHandler = new Handler() {

		public void handleMessage(Message msg) {
			if (msg.obj != null) {
				ReceiveServer = (String) msg.obj;
				ShowMensaje(ReceiveServer);
			}
			progressDialog.dismiss();
		}
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.resolver_orden);
		Bundle bn = getIntent().getExtras();
		
		TextView txtTipo = (TextView) findViewById(R.id.txtOrdenServicio);
		txtTipo.setText(bn.getString("orden"));
		this.orden = bn.getString("orden");  // Guardamos el numero de la orden de servicio
		TextView lbOrden = (TextView)findViewById(R.id.txtOrdenServicio);
		lbOrden.setText(bn.getString("orden"));
		TextView lbTipo = (TextView)findViewById(R.id.txtTipoOrden);
		lbTipo.setText(bn.getString("tipo"));
		
		Button btnCancelar = (Button)findViewById(R.id.BtnCancel);
		btnCancelar.setOnClickListener(this);
		Button btnEnviar = (Button)findViewById(R.id.BtnEnviar);
		btnEnviar.setOnClickListener(this);
		Button btnActividad = (Button)findViewById(R.id.BtnActividad);
		btnActividad.setOnClickListener(this);
		
	}

	public void onClick(View view) {
		// TODO Auto-generated method stub
		if (view.getId() == R.id.BtnCancel) {
			
			finish();
		}else if (view.getId() == R.id.BtnActividad) {
			Intent intent = new Intent(ResolverOrdenActivity.this,
	                  ActividadesActivity.class);
	            startActivityForResult(intent, 11);
			
		}else if (view.getId() == R.id.BtnEnviar) {
			
			
			EditText txtActividad = (EditText)findViewById(R.id.txtActividad);
			String actividad = txtActividad.getText().toString();
			
			EditText txtObservacion = (EditText)findViewById(R.id.txtObservacion);
			String observacion = txtObservacion.getText().toString();
			
			EditText txtLectura = (EditText)findViewById(R.id.txtLectura);
			String lectura = txtLectura.getText().toString();
			
			EditText txtSello = (EditText)findViewById(R.id.txtSellos);
			EditText txtAcometida = (EditText)findViewById(R.id.txtAcometida);
			

	        if (lectura.equals("")) {
	        	ShowMensaje("Debe ingresar la lectura");
	        	return;
	        }

	        if (observacion.equals("")) {
	        	ShowMensaje("Debe ingresar la observacion");
	        	return;
	        }
	        
	        if (actividad.equals("")) {
	        	ShowMensaje("Debe ingresar la actividad");
	        	return;
	        }
			
			RadioButton r1=(RadioButton)findViewById(R.id.radio_s1);
			
			
			String sello = "0";
			
			String cantidad_sellos = txtSello.getText().toString();
			
			
			if (cantidad_sellos.length() > 0) {
				
				if (r1.isChecked()) {
					sello = "1";
				}else {
					sello = "2";
				}
				
				if (!Utilidades.isNumeric(cantidad_sellos)) {
					AlertDialog alert =  (AlertDialog) this.crearDialogoAlerta("Cantidad del Sello no es valida: " + cantidad_sellos);
					alert.show();
					return;
				}
				
				if (Integer.parseInt(cantidad_sellos) <= 0) {
					AlertDialog alert =  (AlertDialog) this.crearDialogoAlerta("Cantidad del Sello debe ser mayor que cero: " + cantidad_sellos);
					alert.show();
					return;
				}
				
				if (Integer.parseInt(cantidad_sellos) > 3) {
					AlertDialog alert =  (AlertDialog) this.crearDialogoAlerta("Cantidad del Sello supera el maximo(3): " + cantidad_sellos);
					alert.show();
					return;
				}
				

			}
			
			
			RadioButton r2=(RadioButton)findViewById(R.id.radio_a1);
	        String metraje = txtAcometida.getText().toString();
	        String acometida = "0";

	        if (metraje.length() > 0) {
				if (r2.isChecked()) {
					acometida = "1";
				}else {
					acometida = "2";
				}
				
				
				if (!Utilidades.isDecimal(metraje)) {
					AlertDialog alert =  (AlertDialog) this.crearDialogoAlerta("Cantidad de la Acometida no es valida: " + metraje);
					alert.show();
					return;
				}
				
				if (Double.parseDouble(metraje) <= 0) {
					AlertDialog alert =  (AlertDialog) this.crearDialogoAlerta("Cantidad de la Acometida debe ser mayor que cero: " + metraje);
					alert.show();
					return;
				}
				
				if (Double.parseDouble(metraje) > 100) {
					AlertDialog alert =  (AlertDialog) this.crearDialogoAlerta("Cantidad de la Acometida supera el maximo(100): " + metraje);
					alert.show();
					return;
				}
			}
	        
			

			TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
	        String imei = tm.getDeviceId();
			
	        
	        
			
			try {
				parametros =  URLEncoder.encode("orden", "UTF-8") + "=" + URLEncoder.encode(orden, "UTF-8");
				parametros += "&" +  URLEncoder.encode("accion", "UTF-8") + "=" + URLEncoder.encode("R", "UTF-8");
				parametros += "&" +  URLEncoder.encode("actividad", "UTF-8") + "=" + URLEncoder.encode(actividad, "UTF-8");
				parametros += "&" +  URLEncoder.encode("observacion", "UTF-8") + "=" + URLEncoder.encode(observacion, "UTF-8");
				parametros += "&" +  URLEncoder.encode("imei", "UTF-8") + "=" + URLEncoder.encode(imei, "UTF-8");
				parametros += "&" +  URLEncoder.encode("lectura", "UTF-8") + "=" + URLEncoder.encode(lectura, "UTF-8");
				parametros += "&" +  URLEncoder.encode("sello", "UTF-8") + "=" + URLEncoder.encode(sello, "UTF-8");
				parametros += "&" +  URLEncoder.encode("cantidad_sellos", "UTF-8") + "=" + URLEncoder.encode(cantidad_sellos, "UTF-8");
				parametros += "&" +  URLEncoder.encode("acometida", "UTF-8") + "=" + URLEncoder.encode(acometida, "UTF-8");
				parametros += "&" +  URLEncoder.encode("metraje", "UTF-8") + "=" + URLEncoder.encode(metraje, "UTF-8");
				
				System.out.println(parametros);
				LoadData();
				
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
	}
	
	private void ShowMensaje(String data) {
		if (data.equals("OK")) {
			data = "Orden de servicio Resuelta";
			Toast toast = Toast.makeText(getApplicationContext(), data, Toast.LENGTH_LONG);
			toast.show();
			Intent intent = new Intent();
			intent.putExtra("resultado", "RESUELTA");
			setResult(RESULT_OK, intent);
			finish();
		} else { // error al confirmar la orden
			AlertDialog alert =  (AlertDialog) this.crearDialogoAlerta(data);
			alert.show();
		}

	}
	
	private void LoadData() {
		progressDialog = ProgressDialog.show(ResolverOrdenActivity.this, "",
				"Por favor espere mientras se envian los datos...", true);

		new Thread(new Runnable() {
			public void run() {
				ResolverOrden conn = new ResolverOrden(
						"http://siscos.fcr.com.co:8080/movilidad/SrvOrderClose?",parametros);
				Message msg = progressHandler.obtainMessage();
				msg.obj = conn.Resolver(orden);
				progressHandler.sendMessage(msg);
			}
		}).start();
	}

	private Dialog crearDialogoAlerta(String mensaje) {
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("Informacion");
		builder.setMessage(mensaje);
		builder.setCancelable(false);
		builder.setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() {
			
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				dialog.cancel();
			}
		});		
		return builder.create();
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		// TODO Auto-generated method stub
		super.onActivityResult(requestCode, resultCode, data);
		EditText txtActividad = (EditText)findViewById(R.id.txtActividad);
		
		if (resultCode == RESULT_OK && requestCode == 11 ) {
			txtActividad.setText(data.getStringExtra("codigo"));
			
		}
	}
	
	

	
}
